/**
 *	3.请编写函数
 *
 *	unsigned int reverse_bits(unsigned int value);
 *
 *	这个函数的返回值是吧value的二进制位模式从左到右变换一下之后的值。例如，在32位机器上，25这个值包含下列各位：
 *
 *	00000000,00000000,00000000,00011001
 *
 *	函数的返回值应该是2550136832,它的二进制位模式是：
 *
 *	10011000,00000000,00000000,00000000
 *
 *	编写函数时注意不要让它依赖于你的机器上整型值的长度。
**/

#include <stdio.h>

unsigned int reverse_bits(unsigned int value);

int main()
{
	printf("%u\n", reverse_bits(25));

	return 0;
}

unsigned int reverse_bits(unsigned int value)
{
	unsigned int res = 0;

	for(int i = 1; i; i <<= 1)
	{
		res <<= 1;
		if(value & 1)
			res |= 1;
		value >>= 1;
	}

	return res;
}

